package main

import (
	"fmt"
)

func main() {
	/*
		选择控制 switch case select（通道中讲）
	*/

	// 这里的 mySwitch 是局部变量
	switch mySwitch := 100; {
	case mySwitch > 90:
		fmt.Println("excellent") // excellent
	case mySwitch > 80:
		fmt.Println("well")
	case mySwitch > 70:
		fmt.Println("good")
	default:
		fmt.Println("bad")
	}

	// 使用 switch 来代替 if else 的书写方式
	var mySwitch int = 100
	// if mySwitch > 100 {

	// } else {

	// }
	switch {
	case mySwitch > 90:
		fmt.Println("excellent") // excellent well
		fallthrough              // 这里的 fallthrough是穿透的意思
		// 不光会打印这里的结果还会继续执行下面的 case
	case mySwitch > 80:
		fmt.Println("well")
	case mySwitch > 70:
		fmt.Println("good")
	default:
		fmt.Println("bad")
	}

	// fallthrough 穿透一级向下执行

	// switch 判断类型
	var myInterface interface{}
	var myFloat = 3.1415
	myInterface = myFloat
	// Switch 类型断言(type switch)
	switch myType := myInterface.(type) {
	case float32:
		fmt.Println("float32", myType)
	case float64:
		fmt.Println("float64", myType) // float64 3.1415
	case int8:
		fmt.Println("int8", myType)
	default:
		fmt.Println("unknown type", myType)
	}
}
